#ifndef __DATASET_H__
#define __DATASET_H__

#include <vector>

// Forward declaration of Sample
class Sample;

class DataSet
{
public:
  DataSet();
  virtual ~DataSet();

  void push_back(const Sample& s);
  const Sample& sample(const unsigned int& i) const;
  const std::vector<Sample>& samples() const;
  const int& label(const unsigned int& i) const;
  const std::vector<int>& labels() const;
  
private:
  std::vector<Sample> samples_;
  std::vector<int> labels_;

  // Checks if a sample that is added is consistent
  // with samples that are already in the dataset
  bool isConsistent_(const Sample& s) const;
};

#endif